# fixture是pytest的一个装饰器,可以将普通函数变为pytest的夹具
# 夹具你可以理解为jmeter中的setup和teardown
# 一般夹具就是数据准备，数据清理，夹具就是为了测试用例服务的

'''创建一个夹具'''
import pytest


@pytest.fixture(name='clamp1')
def clamp_demo():  # 生成器
    print('测试前========================')
    yield
    print('测试后========================')


# print(type(clamp_demo)) # _pytest.fixtures.FixtureFunctionDefinition


'''fixture形参说明'''
# 1、scope：它代表了该夹具的应用范围是多大，默认是“function”
    # “session” “package” “module” “class” “function”
    # 当是 “session” 时，无论你执行多少条用例，该夹具只运行一次（线程数是1）
    # 当是 “package” 时，且autouse是True时，有几个测试用例包，就运行几次
    # 当是 “function” 时，且autouse是True时，有几个测试函数，就调用几次

# 2、autouse：它的实参是布尔值，代表是否自动使用该夹具，默认值是False
# 3、name：可以对夹具重新命名，name='新名字'

'''测试用例如何使用夹具'''
# 当autouse是False时
    # 第一种使用方式，在测试函数/方法的形参括号中，填写你要使用的夹具名字
    # 第二种使用方式，使用装饰器@pytest.mark.usefixture('夹具的名字')

'''夹具存放的位置'''
# 按照规定，建议所有的夹具都存放在名为 conftest.py文件中
# 这个文件在一个项目中可以有多个，根目录下的conftest存放的一般是session级别的夹具
# testcase下的conftest存放的夹具，可能是module，class级别
# 夹具的使用不需要导包，pytest会自动扫描